// 包声明：初始化相关功能
package initialize

// 导入依赖包
import (
	"io/ioutil" // 文件读取
	"strings"   // 字符串处理

	"github.com/go-gota/gota/dataframe" // 数据处理框架
	"github.com/go-gota/gota/series"    // 数据序列处理
)

// LoadQuest 函数：加载并预处理任务模板数据
// 返回值：*dataframe.DataFrame 任务数据框指针
func LoadQuest() *dataframe.DataFrame {
	// 1. 读取CSV文件内容
	// 从./static/data/quest.csv读取原始字节数据
	content, _ := ioutil.ReadFile("./static/data/quest.csv")

	// 2. 处理BOM头(Byte Order Mark)
	// 检查文件开头是否是UTF-8 BOM(0xEF 0xBB 0xBF)
	if content[0] == 0xef || content[1] == 0xbb || content[2] == 0xbf {
		content = content[3:] // 去除BOM头
	}

	// 3. 创建读取器并加载CSV
	// 将字节数据转换为字符串读取器
	ioContent := strings.NewReader(string(content))
	// 使用gota库读取CSV数据
	df := dataframe.ReadCSV(ioContent)

	// 4. 过滤任务数据
	// 只保留状态为"published"的任务
	df = df.Filter(
		dataframe.F{
			Colname:    "Task State", // 列名
			Comparator: series.Eq,    // 比较运算符(等于)
			Comparando: "published",  // 比较值
		},
	)

	// 5. 返回处理后的数据框
	return &df
}
